#!/usr/bin/env bash

# 在 compile 脚本正式开始之前执行
# - heroku buildpack 只支持使用下划线的 hook 文件名（pre_compile），不支持中划线（pre-compile）
# - 此脚本在探测到存在中划线钩子时，将其重命名为下划线
# - 涉及文件：pre-compile 和 post-compile

make_hook() {
    name="$1"
    target="$2"
    hook="${BUILD_DIR}/bin/${name}"
    cat > "${hook}" << EOF
#!/bin/bash
status=0

# Define a simple wrapper function for executing commands, it can be overriden with
# the "alias" command for testing purposes.
function trace_call() {
    exec "\$@" 
}

if [ -f "${BUILD_DIR}/bin/${target}" ]; then
    chmod +x "${BUILD_DIR}/bin/${target}"
    trace_call "${BUILD_DIR}/bin/${target}"
    status=\$?
fi
rm -rf \$0
exit \${status}
EOF
    chmod +x "${hook}"
}

# 兼容 pre-compile 和 post-compile
if [ -d "${BUILD_DIR}/bin" ] && [ ! -f "${BUILD_DIR}/bin/pre_compile" ]; then
    make_hook pre_compile pre-compile
fi

if [ -d "${BUILD_DIR}/bin" ] && [ ! -f "${BUILD_DIR}/bin/post_compile" ]; then
    make_hook post_compile post-compile
fi
